package com.tarena.lbs.coupon.dao.repository;

import com.tarena.lbs.base.protocol.pager.PageResult;
import com.tarena.lbs.coupon.api.pojo.param.UserCouponsParam;
import com.tarena.lbs.coupon.pojo.param.CouponParam;
import com.tarena.lbs.coupon.pojo.query.UserCouponCodeQuery;
import com.tarena.lbs.coupon.pojo.query.UserCouponQuery;
import com.tarena.lbs.coupon.pojo.vo.CouponVO;
import com.tarena.lbs.coupon.pojo.vo.UserCouponsVO;

public interface CouponRepository {

    CouponVO detail(Integer id);

    PageResult<CouponVO> pageList();


    void addCoupon(CouponParam couponParam);

    PageResult<UserCouponsVO> receiveList(UserCouponQuery couponQuery);

    UserCouponsVO receiveDetail(UserCouponCodeQuery query);


    void receiveCoupon(UserCouponsParam param);

    void addStock(Integer couponId, Object maxUsageLimit);

    void updateStock(Integer couponId, Integer count);
}
